/**
 * @description evalThis(  sPrompt, sDefaultScript, sResult ) Used as a javascript breakpoint.  evalThis uses javascripts "eval()" function to execute user specified javascript via a javascript Prompt().  This user code will execute with whatever context was presetn at the time it was called, hence the breakpoint like effect. Upon complete of the user script, the prompt will display the results if any, and re-populate the prompt with the last script executed. This will continue until the user clicks cancel. evalThis is usually called with NO parameters.  All of the parameters are intended for the script to use recursively, except sPrompt, which doesn't change.
 * @version 1.1
 * @param {String} sPrompt [ optional ] display message shown the the user when the prompt appears.  If you happen to have something more useful to say, this is the place to do it.  This value does not change as the script recurses.
 * @param {String} sDefaultScript [ optional ] allows evalThis to recursive call itself and pass the value of the last executed script to be the new default value in the prompt - so the user doesn't have to retype the script - they can just edit it.
 * @param {String} sResult [ optional ] allows evalThis to recursive call itself and pass the value of the last successful execution to the prompt display.
 * @return undefined nothing is returned, though the code recursively calls itself as long as you cancel
 * @author Quincy L. Acklen
 * @copyright Copyright (c) 1999-2006 The UI Side. All rights reserved.
 */

function evalThis( sPrompt, sDefaultScript, sResult )
{
    sPrompt = sPrompt || "What script would you like to eval()?";
    sResult = sResult || "";
    sDefaultScript = sDefaultScript || "";
    var sScript = prompt( sPrompt + "\n" + sResult, sDefaultScript );
    if( sScript )
    {
        try
        {
            var sNewResult = eval(sScript);
            evalThis(sScript, sScript, sNewResult);
        }
        catch(e)
        {
            evalThis(sScript, sScript, e.message);
        }

    }
}